package cn.admobiletop.adsuyi.adapter.gdt.listener;

import com.qq.e.ads.banner2.UnifiedBannerADListener;
import com.qq.e.comm.util.AdError;

import cn.admobiletop.adsuyi.ad.listener.ADSuyiBannerAdListener;
import cn.admobiletop.adsuyi.adapter.gdt.data.BaseAdInfo;

/**
 * @author ciba
 * @description 横幅广告监听
 *              需要继承 BaseAdListener<ADSuyiBannerAdListener>，实现所适配渠道的横幅广告监听回调，并在回调中调用事先set的adListener，进行相应回调
 *              需要在渠道回调中调用ADSuyi以下方法：
 *                  getAdListener().onAdReceive(this) 广告获取
 *                  getAdListener().onAdExpose(this)  广告曝光
 *                  getAdListener().onAdClose(this)   广告关闭
 *                  getAdListener().onAdClick(this)   广告点击
 *                  onAdFailed(code, message)         广告失败
 * @date 2020/4/7
 */
public class BannerAdListener extends BaseAdListener<ADSuyiBannerAdListener> implements UnifiedBannerADListener {
    private BaseAdInfo bannerAdInfo;

    public BannerAdListener(String platformPosId, ADSuyiBannerAdListener adListener) {
        super(platformPosId, adListener);
    }

    /**
     * 广点通广告加载失败
     * @param adError
     */
    @Override
    public void onNoAD(AdError adError) {
        onAdFailed(adError.getErrorCode(), adError.getErrorMsg());
    }

    /**
     * 广点通广告加载成功
     */
    @Override
    public void onADReceive() {
        if (getAdListener() != null) {
            releaseBannerAdInfo();
            bannerAdInfo = new BaseAdInfo(getPlatformPosId());
            getAdListener().onAdReceive(bannerAdInfo);
        }

    }

    /**
     * 广点通广告曝光
     */
    @Override
    public void onADExposure() {
        if (getAdListener() != null && bannerAdInfo != null) {
            getAdListener().onAdExpose(bannerAdInfo);
        }
    }

    /**
     * 广点通广告关闭
     */
    @Override
    public void onADClosed() {
        if (getAdListener() != null && bannerAdInfo != null) {
            getAdListener().onAdClose(bannerAdInfo);
        }
    }

    /**
     * 广点通广告点击
     */
    @Override
    public void onADClicked() {
        if (getAdListener() != null && bannerAdInfo != null) {
            getAdListener().onAdClick(bannerAdInfo);
        }
    }

    /**
     * 广点通广告点击离开应用时回调
     */
    @Override
    public void onADLeftApplication() {}

    /**
     * 广点通广告打开浮层
     */
    @Override
    public void onADOpenOverlay() {}

    /**
     * 广点通广告浮层关闭
     */
    @Override
    public void onADCloseOverlay() {}

    /**
     * ADSuyi广告释放会调用该方法
     */
    @Override
    public void release() {
        super.release();
        releaseBannerAdInfo();
    }

    /**
     * 释放Banner广告Info对象
     */
    private void releaseBannerAdInfo() {
        if (bannerAdInfo != null) {
            bannerAdInfo.release();
            bannerAdInfo = null;
        }
    }


}
